import time
import unittest
from BeautifulReport import BeautifulReport as bf

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions


class ChromeTestCase(unittest.TestCase):
    """
    这是一个 Chrome 的 测试集
    """
    driver = None

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()

        # 隐式等待 是全局的
        # 全局的元素等待时间
        cls.driver.implicitly_wait(time_to_wait=30)
        # 网页加载时间
        cls.driver.set_page_load_timeout(time_to_wait=30)
        # 脚本的处理时间
        cls.driver.set_script_timeout(30)

    def test_alert(self):
        """测试网页的等待时间"""
        self.driver.get("file:///C:/Users/edz/Desktop/testhtml/exam/House.html")

        # self.driver.switch_to.alert.accept()

        # 固定等待
        # time.sleep(10)

        # 加入一个元素 出现的很慢
        # 显示等待 是为某一个 特定的元素 进行的时间等待
        # 如果想要使用 显示等待 需要 导包
        c2 = WebDriverWait(
            driver=self.driver,  # 浏览器驱动
            timeout=30,  # 超时时间
            poll_frequency=1,  # 步长  默认为 0.5  每隔多久搜索一次
            ignored_exceptions=None  # 忽略想要的异常  默认忽略的是 元素未找到异常
        ).until(
            expected_conditions.presence_of_element_located((By.NAME, 'c2'))
        )

        c2.click()
        print(c2.is_selected())

    @classmethod
    def tearDownClass(cls):
        # cls.driver.close()
        # cls.driver.quit()
        pass


if __name__ == '__main__':
    pass
